package com.linchong.xshop.service;

import com.linchong.xshop.dto.ImageHolder;
import com.linchong.xshop.dto.ProductExecution;
import com.linchong.xshop.entity.Product;
import com.linchong.xshop.exceptions.ProductOperationException;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.InputStream;
import java.util.List;

/**
 * @BelongsProject:xshop
 * @BelongsPackage:com.linchong.xshop.service
 * @Author:linchong
 * @CreateTime:2018-08-09 14:12
 * @Description:商品Service接口
 */
public interface ProductService {


    /**
     * 查询商品的列表并进行分页，可输入条件有：商品名(模糊)，商品状态，店铺Id,商品类别
     * @param productCondition
     * @param pageIndex
     * @param pageSize
     * @return
     */
    ProductExecution getProductList(Product productCondition, int pageIndex, int pageSize);
//
//    Product getProductById(long productId);

    /**
     * 添加商品以及处理图片
     * 1.处理商品
     * 2.添加缩略图
     * 3.添加商品信息
     * @param product
     * @param thumbnail
     * @param productImgs
     * @return
     * @throws RuntimeException
     */
    ProductExecution addProduct(Product product, ImageHolder thumbnail,List<ImageHolder> productImgList)throws RuntimeException;

  //  ProductExecution modifyProduct(Product product, CommonsMultipartFile thumbnail,
  //                                 List<CommonsMultipartFile> productImgs) throws ProductOperationException;


    /**
     * 通过商品id查询唯一的商品信息
     * @param productId
     * @return
     */
    Product getProductById(Long productId);

    /**
     * 修改商品信息以及处理图片
     * @param product
     * @param thumbnail
     * @param productImgHolderList
     * @return
     * @throws ProductOperationException
     */
    ProductExecution modifyProduct(Product product,ImageHolder thumbnail,List<ImageHolder> productImgHolderList)
        throws ProductOperationException;


}
